
function convert(sValue, sDataType) {
	try {
		switch (sDataType) {
		  case "int":
			return parseInt(sValue);
		  case "float":
			return parseFloat(sValue);
		  case "date":
		    return new Date(Date.parse(sValue));
		  default:
			return sValue.toString();
		}
	}
	catch (err) {
	}
}
function generateCompareTRs(iCol, sDataType) {
	//dojo.debug("iCol="+iCol+"  sDataType="+sDataType);
	return function compareTRs(oTR1, oTR2) {
		var vValue1="";
		var vValue2="";
		
		
		
		if (oTR1.cells[iCol].getAttribute("value"))
		{
			//dojo.debug("oTR1.cells[iCol].getAttribute(\"value\")");
			try{
			vValue1 = convert(oTR1.cells[iCol].getAttribute("value"), sDataType);
			}catch(e){}
			try{
			vValue2 = convert(oTR2.cells[iCol].getAttribute("value"), sDataType);
			}catch(e){}
		}
		else
		{
			//dojo.debug("oTR1.cells[iCol].getAttribute(\"value\") false");
			try{
			vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
			}catch(e){}
			//dojo.debug(oTR1.cells[iCol].innerText);
			try{
			vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
			}catch(e){}
			
			//vValue1 = convert(oTR1.cells[iCol].innerText, sDataType);
			//dojo.debug(oTR1.cells[iCol].innerText);
			//vValue2 = convert(oTR2.cells[iCol].innerText, sDataType);
			
		}
		
		
		if (vValue1 < vValue2) {
			//dojo.debug(vValue1 +"<"+ vValue2);
			return -1;
		} else {
			if (vValue1 > vValue2) {
				//dojo.debug(vValue1 +">"+ vValue2);
				return 1;
			} else {
				//dojo.debug(vValue1 +"="+ vValue2);
				return 0;
			}
		}
	};
}
function sortTable(sTableID, iCol, sDataType) {
	try{
	var oTable = g(sTableID);
	var oTBody = oTable.tBodies[0];
	var colDataRows = oTBody.rows;
	var aTRs = new Array;
	//dojo.debug("colDataRows.length="+colDataRows.length);
	for (var i = 0; i < colDataRows.length; i++) {
		aTRs[i] = colDataRows[i];
	}
	if (oTable.sortCol == iCol) {
		aTRs.reverse();
	} else {
		aTRs.sort(generateCompareTRs(iCol, sDataType));
	}
	var oFragment = document.createDocumentFragment();
	for (var i = 0; i < aTRs.length; i++) {
		oFragment.appendChild(aTRs[i]);
	}
	oTBody.appendChild(oFragment);
	oTable.sortCol = iCol;
	}catch(e){}
	
}

 


